Tengo un problema con este bucle. Quiero resumir los valores de la tabla, pero tengo el valor NaN de este código. ¿Debo cambiar algo o hay alguna otra solución para resumir?
function sumUpWallet() { var walletTable = document.getElementById("usersCrypto"); let sumVal = 0; for (var i = 1; i < (walletTable.rows.length - 2); i++) { const tableData = walletTable.rows[i].cells[3]; if (tableData && tableData.textContent) { const value = parseFloat(tableData.textContent); if (!isNaN(value)) { sumVal = sumVal + value; }; }; } console.log(sumVal); document.getElementById("sumDol").innerHTML = sumVal.toFixed(2); };La tabla es dinámica, después de hacer clic en el botón se agrega otra fila. Por ejemplo, puede verse así:


El problema es cuando haces:
console.log(walletTable.rows[i].cells[3]); obtienes el resultado de seguimiento <td>19271.71</td> en lugar de la figura 19271.71 para el primer resultado de i
Para solucionar esto, agregue .textContent al parseFloat como se muestra a continuación
sumVal = sumVal + parseFloat(walletTable.rows[i].cells[3].textContent);Adicional:
Parece que está accediendo a datos fuera del rango de la tabla. Debe hacer alguna validación para asegurarse de que lo que está leyendo sea válido antes de agregarlo a sumVal.
const tableData = walletTable.rows[i].cells[3]; if (tableData && tableData.textContent) { const value = parseFloat(tableData.textContent); if (!isNaN(value)) { sumVal = sumVal + value; } }Se agregó un ejemplo que prueba que el código anterior funciona.
function sumUpWallet() { var walletTable = document.getElementById("usersCrypto"); let sumVal = 0; for (var i = 1; i < (walletTable.rows.length - 2); i++) { const tableData = walletTable.rows[i].cells[3]; if (tableData && tableData.textContent) { const value = parseFloat(tableData.textContent); if (!isNaN(value)) { sumVal = sumVal + value; }; }; } console.log(sumVal); document.getElementById("sumDol").innerHTML = sumVal.toFixed(2); }; sumUpWallet(); <table id="usersCrypto" border="1"> <tr> <td> Name </td> <td> price </td> <td> Amount </td> <td> Header </td> <tr> <tr> <td> Bitcoin </td> <td> 19271.71 </td> <td> 1 </td> <td> 19271.71 </td> <tr> <tr> <td> Ethereum </td> <td> 1070.11 </td> <td> 2 </td> <td> 2140.23 </td> <tr> <tr> <td colspan="2"> </td> <td> PLN </td> <td> DOL$ </td> <tr> <tr> <td colspan="2"> Summary Value </td> <td> </td> <td id="sumDol"> </td> <tr> </table>